Please ask about problems and questions regarding this tutorial on answers.ros.org. Don't forget to include in your question the link to this page, the versions of your OS & ROS, and also add appropriate tags. |
bagファイルから画像や動画に出力(エクスポート)する方法
Description: このチュートリアルはbagファイルから画像のメッセージを連続したjpeg画像にエクスポートする方法を説明した後, OGG Theoraの動画フォーマットにエンコードする方法に発展します.Keywords: data, rosbag, record, play, info, bag, export, video
Tutorial Level: BEGINNER
Next Tutorial: フィルタされたbagファイルを生成する
チュートリアルの準備
このチュートリアルではjpeg画像もしくは動画にエクスポートするための画像データを含むbagファイルを過去に記録していることが必要になります. さらに, このチュートリアルはimage_viewパッケージがビルドされ, 多少の動画ユーティリティがインストールされていることも求められています.
これでチュートリアルを完了するために必要なツールがインストールされます. このチュートリアルの残りの部分では, .bagファイルが過去にtest.bagの名前で生成され, image_viewパッケージのディレクトリに格納されていることを前提としています.
jpegをbagファイルからエクスポートする
jpeg画像をbagファイルからエクスポートするには, まずデータをダンプ(展開)するためのlaunchファイルを作成する必要があります. この例では, /camera/image_rawを要求する画像データのトピックとして使用しています. 必要に応じて, この部分は置き換えが可能です.
1 <launch>
2 <node pkg="rosbag" type="play" name="rosbag" args="-d 2 $(find image_view)/test.bag"/>
3 <node name="extract" pkg="image_view" type="extract_images" respawn="false" output="screen" cwd="ROS_HOME">
4 <remap from="image" to="/camera/image_raw"/>
5 </node>
6 </launch>
このlaunchファイルは以下のようにして実行することができます
1 roslaunch export.launch
これによって, 画像名frame%04d.jpgの形式でホームディレクトリの".ros"フォルダの中にダンプされます. 処理が完了すると, process has finished cleanly. のようなメッセージが表示され, Ctrl-Cで立ち上げたプログラムを終了させます.
画像ファイルはどこでも扱いやすい場所に簡単に移動できます.
jpegをOGG Theoraフォーマットの動画に変換する
この手順はここから参照できる情報に基づいており, 動作確認がとれているものです.
カメラが15フレーム毎秒で動作している場合, 適切な結果を得るためにシェルで以下のコマンドを実行します.
1 cd ~/test
2 jpeg2yuv -I p -f 15 -j frame%04d.jpg -b 1 > tmp.yuv
3 ffmpeg2theora --optimize --videoquality 10 --videobitrate 16778 -o output.ogv tmp.yuv
もしくは, MPEG動画をjpegから直接生成します.